package com.example.sourcesprng.jdk17._String;

import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Stream;

public class TestJDK17_String {
    public static void main(String[] args) {
        String str = "abcd外加一个好人";

        // 重复str的内容3次，并生成一个新的字符串
        String repeat = str.repeat(3);
        System.out.println(repeat);

        // isBalnk判空
        String isBlank = "";
        System.out.println(isBlank.isBlank());
        // 以下代码还是会报空指针异常
        // isBlank = null;
        // System.out.println(isBlank.isBlank());

        // strip() 去除字符串两边的空格，全角半角都可以去除
        // trim() 去除字符串两边的空格，只能去除半角空格
        String strip = "　左边是全角空格，右边是半角空格 ";
        System.out.println(strip.strip());
        System.out.println(strip.trim());

        // lines 将字符串转为流，可以对该流进行操作
        String lines = """
                这是一首诗，
                鹅鹅鹅，
                曲项向天歌。
                白毛浮绿水，
                红掌拨清波。               
                """;
        Stream<String> lines1 = lines.lines();
        Optional<String> first = lines1.findFirst();
        System.out.println((first.get() != null ? first.get().toString() : "第一个是空值"));

        // indent：给字符串做缩进，如下案例，缩进位5
        String indent = "这是一段话";
        System.out.println(indent.indent(5));

        // transform
        String transform = "transform";
        String transform1 = transform.transform(new Reverser());
        System.out.println(transform1);
    }
}

class Reverser implements Function<String, String> {
    @Override
    public String apply(String s) {
        StringBuffer stringBuffer = new StringBuffer(s);
        return stringBuffer.reverse().toString();
    }
}